package com.lion.utils;

import java.sql.Timestamp;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

/**
 * @author Chris Chan
 * Create on 2021/12/25 16:58
 * Use for: 时间工具
 * Explain:
 */
public class TimeUtil {

    /**
     * 当前时间戳
     *
     * @return
     */
    public static Timestamp now() {
        return new Timestamp(nowLong());
    }

    /**
     * 当前时间戳
     *
     * @return
     */
    public static long nowLong() {
        return Instant.now().atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
    }

    /**
     * 当前时间
     *
     * @param pattern
     * @return
     */
    public static String nowString(String pattern) {
        return Instant.now().atZone(ZoneId.of("+8")).format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 在现在多少秒之后
     *
     * @param seconds
     * @return
     */
    public static long afterNowSeconds(long seconds) {
        return Instant.now().plus(seconds, ChronoUnit.SECONDS).atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
    }

    /**
     * 在现在多少分之后
     *
     * @param minutes
     * @return
     */
    public static long afterNowMinutes(long minutes) {
        return Instant.now().plus(minutes, ChronoUnit.MINUTES).atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
    }

    /**
     * 在现在多少小时之后
     *
     * @param hours
     * @return
     */
    public static long afterNowHours(long hours) {
        return Instant.now().plus(hours, ChronoUnit.HOURS).atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
    }

    /**
     * 在现在多少天之后
     *
     * @param days
     * @return
     */
    public static long afterNowDays(long days) {
        return Instant.now().plus(days, ChronoUnit.DAYS).atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
    }
}
